import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: WHY
 * Date: 2023-03-27
 * Time: 20:04
 */
//算法强化第二天编程题
    //将一句话的单词进行倒置，标点不倒置。比如 I like beijing. 经过函数后变为：beijing. like I
//输入描述：
//每个测试输入包含1个测试用例： I like beijing. 输入用例长度不超过100
//输出描述：
//依次输出倒置之后的字符串,以空格分割
    //示例1
//输入：
//I like beijing.
//复制
//输出：
//beijing. like I
    //这个题的思路是先整体进行逆置,得到  gnijieb  ekil  I
    //然后分别对每一部分的单词进行逆置,最后返回即可
public class Main {
    public static void reverse(char[] array,int start,int end){
        while(start<end){
            char tmp=array[start];
            array[start]=array[end];
            array[end]=tmp;
            start++;
            end--;

        }
    }
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        String s=scanner.nextLine();
        char[] ch=s.toCharArray();
        int len=ch.length;
//        int start=0;
//        int end= ch.length-1;
        //1.完成了整体的逆置
        reverse(ch,0,len-1);
        //2.每一部分也要逆置
        int i=0;
        while(i< len){
            int j=i;
            while(j< len&&ch[j]!=' '){
               j++;
            }
            if(j<len){//走到这一步说明不满足第一个小于长度的条件或者不满足第二个不等于空格的条件,这里就是j=空格了
                reverse(ch,i,j-1);
                i=j+1;
            }else{//j一直++,到最后一个字母I,此时j=长度了,不满足<长度,但是只有一个字母
                reverse(ch,i,j-1);
                i=j;//让i=j

            }
        }
        //最后要以字符串的形式输出
        String str=new String(ch);
        System.out.println(str);

    }
}
